import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
import * as express from 'express';
import * as path from 'path';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
// 移除AuthMiddleware的直接导入，改为在AppModule中配置

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  
  // 配置CORS - 允许所有跨域请求
  app.enableCors({
    origin: true, // 允许所有来源
    credentials: true,
    methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
    allowedHeaders: ['Content-Type', 'Authorization', '*'],
    preflightContinue: false,
    optionsSuccessStatus: 204,
  });
  
  // 添加全局验证管道
  app.useGlobalPipes(new ValidationPipe());
  
  // 配置静态文件服务
  app.use('/uploads', express.static(path.join(__dirname, '..', 'uploads')));
  
  // 认证中间件应该通过AppModule中的providers注册并通过全局中间件配置
  // 或者使用应用实例的use方法配合resolve方法
  // 这里暂时注释掉，在AppModule中正确配置
  
  // 配置Swagger文档
  const config = new DocumentBuilder()
    .setTitle('博客系统 API')
    .setDescription('博客系统的后端API文档')
    .setVersion('1.0')
    .addBearerAuth()
    .build();
  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api-docs', app, document);
  
  // 使用环境变量中的端口
  const port = process.env.PORT || 3001;
  await app.listen(port);
  console.log(`服务运行在端口 ${port}`);
  console.log(`Swagger文档地址: http://localhost:${port}/api-docs`);
}
bootstrap();
